查看原文
其他

妙“剪”生花!用AI绘就家乡城市的剪纸画

将AI进行到底的 飞桨PaddlePaddle 2023-03-16


随着人工智能技术飞速发展,大规模预训练模型(以下简称大模型)的出现使零样本建模成为可能。现在,百度飞桨文心大模型为开发者提供多样化的在线API调用、Prompt-tuning、本地API参数调优等服务,助力各位创意大师“花式”完成代码实践、前端页面搭建等任务。现在,已经有飞桨社区开发者基于飞桨框架和文心大模型在零样本或小样本场景下,完成了兼具技术创新与新颖创意的优质项目。为此,飞桨开发者说专栏特别推出文心大模型专题,邀请飞桨社区开发者show出“脑洞”与开发心得,与大家一同探索用文心大模型完成趣味无穷、高实用价值项目的无限可能。



作者简介

武琪,供职于中国石油集团共享运营有限公司海外财务共享服务中心,从事信息化应用工作,10年前,在吉林大学的研究生课堂上首次接触AI,喜欢利用单片机、Arduino、树莓派完成AI创意,2021年9月加入飞桨社区。

剪纸是我国古老的民间艺术。对于民间艺人而言,一张纸、一把剪刀、一套代代流传的精美图样,就能变幻出无穷的剪纸花样。从祝福新人的大红“囍”字,再到迎春贺岁时的锦绣窗花,人们把对生活的美好期盼、把对家乡的无尽思念绘入这精美的艺术中。而现在,文心大模型将这份传统的浪漫与前沿人工智能技术整合,AI画笔让绘制剪纸图样不再是繁琐的工序,而是充满趣味与创新的艺术探索。

我使用飞桨框架,结合对文心文生图大模型ERNIE-ViLG的调用,使其能够实现AI一键生成城市特色剪纸图。

  • AI Studio项目链接/本文所用源码与数据
欢迎fork交流:
https://aistudio.baidu.com/aistudio/projectdetail/4455427

先为大家展示一些由文心ERNIE-ViLG模型生成的剪纸画样例,是不是很好玩?


北京 多云 广州 晴

杭州 阴

 南京 雨

接下来跟我一起动手,用AI给家乡城市绘制满含心意的剪纸画吧!为了让生成的剪纸更加生动有趣,我们可以尝试将该城市实时的天气情况等作图所需的内容信息整合到提示词中。因此,该项目可以通过两步来实现更好的效果:

  • 第一步:获取额外的作图信息,例如调用免费天气API接口获取天气状况;
  • 第二步:调用文心ERNIE-ViLG开放API完成AI绘图。



作图准备


获取天气状况(可跳过)
天气API接口比较简单,直接按照API说明调用即可。我在项目中使用的是免费API接口。我们需要先把城市名称转换成城市代码,然后调用API传入城市代码,返回的结果就是对应城市实时的天气情况。城市代码表是API接口文档提供的,包装在json文件里面,这个代码一般都是通用的。
  • 代码片段:获取城市id
# 定义获取城市id的函数,传入的名称为None时随机获取一个城市,返回城市id和城市名称

def get_city_id(city_name = None):
    # 读取城市列表
    city_json = "city.json"    # json文件,
    city_id = None
    with open(city_json) as f:
        citys = json.load(f)
    if city_name == None:
        idx = random.randint(0,len(citys)-1)    # 随机选取一个城市
        city_id = citys[idx]["id"]    # 获取城市id
        city_name = citys[idx]["cityZh"]    
    else:
        for c in citys:
            if city_name == c["cityZh"]:
                city_id = c["id"]
                break
        if city_id == None:
            print(f"Can't find city_id for {city_name}!")
return (city_id,city_name)

# 获取城市id
city_id,city_name = get_city_id(city_name="北京")
print(f"{city_id},{city_name}")

获取到城市代码之后,我们就可以调用天气API来获取天气状况。具体可以参考你所使用的API说明文档进行调整。

  • 代码片段:获取实时天气状况

# 读取天气数据
tianqi_appid = <天气API接口的appid>
tianqi_appsecret = <天气API接口的appsecret>
#tianqi_url = f"https://v0.yiketianqi.com/api?unescape=1&version=v61&appid={tianqi_appid}&appsecret={tianqi_appsecret}"
tianqi_url = f"https://www.yiketianqi.com/free/day?appid={tianqi_appid}&appsecret={tianqi_appsecret}&unescape=1&cityid={city_id}"
tianqi_resp = requests.get(tianqi_url)
tianqi_resp = tianqi_resp.json()
print(tianqi_resp)
# 提取天气字段
txt_tianqi = tianqi_resp["wea"]
txt_city = tianqi_resp["city"]
print(f"{txt_city}:{txt_tianqi}")


开始制作


调用文心ERNIE-ViLG开放API生成剪纸画

安装文心ERNIE-ViLG API

文心ERNIE-ViLG参数规模达到百亿,是全球大规模的中文跨模态生成模型之一,在文本生成图像、图像描述等跨模态生成任务上效果突出。文心ERNIE-ViLG可以根据用户输入的文本,自动创作图像。你可以在文本框中输入一段文本描述,并选择生成风格,模型就会根据输入的内容自动创作出符合要求的图像。我在项目中直接使用了官方包装好的本地API接口。
  • 代码片段:安装文心API,在命令行执行,notebook记得加“!”
# 安装文心api
pip install --upgrade wenxin-api

配置文心ERNIE-ViLG API

文心大模型将任务封装为API供我们使用,调用API需要我们获取API Key(AK)和Secret Key(SK),因此我们需要获取Token。

有了AK和SK,就可以配置提示词,调用文心大模型来画图,点击下方链接,自行在右上角个人中心申请即可。

https://wenxin.baidu.com/moduleApi/ernieVilg
  • 代码片段:调用文心开放API画图

# 调用模型
# -*- coding: utf-8 -*
import wenxin_api # 可以通过"pip install wenxin-api"命令安装
from wenxin_api.tasks.text_to_image import TextToImage
wenxin_api.ak = "<申请到的ak>"
wenxin_api.sk = "<申请到的sk>"

input_txt = f"红白,剪纸,城市:{txt_city},{txt_tianqi}"
input_dict = {
    "text": input_txt,
    "style""写实风格"
}
rst = TextToImage.create(**input_dict)    # 转换成关键字参数传递给接口

调用模型生成图片并显示

调用文心ERNIE-ViLG模型后,返回的结果是一个dict类型,里面即为图片的URL,我们需要定义一个函数使图片得以显示出来。

# 图片显示函数
def show_img(img_path):
    response = requests.get(img_path) #图片地址
    response = response.content
    BytesIOObj = BytesIO()
    BytesIOObj.write(response)
    img = Image.open(BytesIOObj)
    plt.figure(dpi = 144)
    plt.axis('off')
plt.imshow(img) 

# 显示图片
imgUrls = rst["imgUrls"]    # 提取图片地址,list格式
for imurl in imgUrls:
    #print(imurl)
    show_img(imurl)


运行项目


接下来就是见证奇迹的时刻!输入你的家乡或者计划前去旅行的城市名称,看看AI会怎样绘制这座城市的定制剪纸画吧。

左右滑动查看更多剪纸画

目前项目做的还比较简单,如果将其与天气预报小程序结合,也许会有不错的应用效果。前有“墨迹天气”,我们也许可以做出“剪纸天气”,既方便大家日常出行的需求,又能以新颖的形式宣扬保存我们优秀的传统文化,一举两得。


项目总结


本项目通过调用文心ERNIE-ViLG API接口实现了给城市定制天气剪纸画的功能。文生图大模型比比皆是,但想要展示我国优良传统文化,生成作为非物质文化遗产的中国剪纸,文心ERNIE-ViLG无疑做到了表率。只需简单几行代码,即可为你的家乡绘制根据天气实时定制的精美剪纸。

文心大模型是百度自主研发的产业级知识增强大模型,从大规模知识和海量数据中融合学习,效率更高、效果更好,具备领先的理解和生成能力。基于飞桨深度学习平台,文心已发布20多个大模型,并打造了丰富的工具与平台,支撑企业与开发者进行高效便捷的应用开发。

近期文心ERNIE-ViLG文图生成算法迎来升级,通过渐进式扩散模型,生成空间由小及大、生成轮廓由粗到细,同时根据生成阶段自动选择最优生成网络,文本生成图像的效果取得进一步提升。欢迎大家访问文心大模型官网,在开放API中心体验文心ERNIE-ViLG文生图服务。

访问开始AI作画:
https://wenxin.baidu.com/moduleApi/ernieVilg

往期精彩



关注【飞桨PaddlePaddle】公众号

获取更多技术内容~



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存